/******************************************************************************
 * * ui_activity_id.h - activity ID define for UI
 *
 * *(C) Copyright 2019 Asr International Ltd.
 * * All Rights Reserved
 * ******************************************************************************/
#ifndef _UI_ACTIVITY_ID_H_
#define _UI_ACTIVITY_ID_H_

#ifdef __cplusplus
extern "C" {
#endif /* __cpluscplus */

#ifdef LV_CONF_INCLUDE_SIMPLE
#include "lvgl.h"
#include "lv_watch_conf.h"
#else
#include "../../../lvgl/lvgl.h"
#include "../../../lv_watch_conf.h"
#endif

enum
{
    ACT_ID_SOS = 0,                     /*0: sos*/
    ACT_ID_LOWBATTERY,                  /*1: lowbattery*/
    ACT_ID_LAUNCHER,                    /*2: dial and primary_menu*/
    ACT_ID_STATUS_AND_SETTING,          /*3: up UI of launcher*/
    ACT_ID_PEDOMETER,                   /*4: down UI of launcher*/
    ACT_ID_SETTING,                     /*5: setting*/
    ACT_ID_LANGUAGE_SWITCH,             /*6: language switch*/
    ACT_ID_SHUTDOWN,                    /*7: shutdown*/
    ACT_ID_PHONEBOOK,                   /*8: phonebook*/
    ACT_ID_PHONE,                       /*9: phone*/
    ACT_ID_SLIDER,                      /*10: slider*/
    ACT_ID_DIAL_SWITCH,                 /*11: dial switch*/
    ACT_ID_MAKE_FRIENDS,                /*12: make friends*/
    ACT_ID_QRCODE,                      /*13: qrcode*/
    ACT_ID_SETTING_VOLUME,              /*14: setting volume*/
    ACT_ID_SETTING_BRIGHTNESS,          /*15: setting brightness*/
    ACT_ID_POWER_OFF_CHARGING,          /*16: power off charging*/
    ACT_ID_DIALPAD,                     /*17: dial pad*/
    ACT_ID_ALARM,                       /*18: alarm*/
    ACT_ID_STOPWATCH,                   /*19: stopwatch*/
    ACT_ID_SEARCH,                      /*20: search*/
    ACT_ID_CALCULATOR,                  /*21: calculator*/
    ACT_ID_SETTING_DATETIME,            /*22: date&time */
    ACT_ID_NO_CONTACTS_OR_NETWORK,      /*23: no contacts or network */
    ACT_ID_SETTING_ABOUT,               /*24: setting about */
    ACT_ID_BODYINFO_ADJUST,             /*25: bodyinfo adjust weight or height*/
    ACT_ID_FACTORY_MODE_MAIN,           /*26: factorymode main menu*/
    ACT_ID_FACTORY_MODE_AUTOTEST,       /*27: factorymode autotest*/
    ACT_ID_FACTORY_MODE_TESTREPORT,     /*28: factorymode testrepor*/
    ACT_ID_FACTORY_MODE_AGINGTEST,      /*29: factorymode agingmode*/
    ACT_ID_FACTORY_MODE_RESET,          /*30: factorymode reset*/
    ACT_ID_FACTORY_MODE_PERFM_TEST,     /*31: factorymode performance test*/
    ACT_ID_RESTART_AND_RESET,           /*32: restart and reset*/
    ACT_ID_RESTART,                     /*33: restart*/
    ACT_ID_VOICE_MSG,                   /*34: voice message*/
    ACT_ID_VOICE_MSG_INCOMING,          /*35: incoming message for voice message*/
    ACT_ID_VOICE_MSG_CHAT,              /*36: voice message chat*/
    ACT_ID_VOICE_MSG_SPEAK,             /*37: speak voice message*/
    ACT_ID_VOICE_MSG_SEND,              /*38: send voice message and display result*/
    ACT_ID_VOICE_MSG_EXPRESSION,        /*39: select expression in voice msg*/
    ACT_ID_VOICE_MSG_PHOTO,             /*40: enlarged photo in voice msg*/
    ACT_ID_CAMERA,                      /*41: camera*/
    ACT_ID_SPEECH_RECOG,                /*42: speech recognition*/
    ACT_ID_SPEECH_RECOG_DETAIL,         /*43: details of text message in speech recognition*/
    ACT_ID_SPEECH_RECOG_SPEAK,          /*44: speak in speech recognition*/
    ACT_ID_SPEECH_RECOG_SEND,           /*45: send voice from user in speech recognition*/
    ACT_ID_SPEECH_RECOG_AUDIO,          /*46: play audio in speech recognition*/
    ACT_ID_ALBUM,                       /*47: album*/
    ACT_ID_ALBUM_SETTING,               /*48: album setting*/
    ACT_ID_ENGINEER_MODE_MAIN,          /*49: engineer mode main menu*/
    ACT_ID_ENGINEER_MODE_TELEPHONY,     /*50: engineer mode telephony menu*/
    ACT_ID_ENGINEER_MODE_CONNECTIVITY,  /*51: engineer mode connectivity menu*/
    ACT_ID_ENGINEER_MODE_HARDWARETESTING,/*52: engineer mode hardware testing menu*/
    ACT_ID_ENGINEER_MODE_LOCATION,      /*53: engineer mode location menu*/
    ACT_ID_ENGINEER_MODE_AUDIO_CALIBRATION,/*54: engineer mode audio calibration menu*/
    ACT_ID_ENGINEER_MODE_ITEM,          /*55: engineer mode item*/
    ACT_ID_CTA_MAIN,                    /*56: cta main menu*/
    ACT_ID_CTA_PHONEBOOK,               /*57: cta phonebook*/
    ACT_ID_CTA_PHONEBOOK_ADD,           /*58: cta phonebook add contact*/
    ACT_ID_CTA_PHONEBOOK_NOTICE,        /*59: cta phonebook notice*/
    ACT_ID_ENGINEER_MODE_ITEM_HWT,      /*60: engineer mode hardware testing item*/
    ACT_ID_CELL_INFO_ITEM,              /*61: cell information item*/
    ACT_ID_UPGRADE,                     /*62: upgrade*/
    ACT_ID_POWON_LOGO,                  /*63: poweron logo*/
    ACT_ID_CALL_PROMPT,                 /*64: call prompt display*/
    ACT_ID_VOLTE_SWITCH,                /*65: volte switch*/
    ACT_ID_BARCODE,                     /*66: barcode*/
    ACT_ID_IMS_VOPS,                    /*67: IMSVOPS*/
    ACT_ID_VOIPPHONE,                   /*68: video call */
    ACT_ID_VOIP_PHONEBOOK,              /*69: video call phone book*/
    ACT_ID_VOIP_PHONEBOOK_NOTICE,       /*70: video call phone book notice*/
    ACT_ID_VOIP_PHONEBOOK_ADD,          /*71: video call phone book add*/
    ACT_ID_FACTORY_MODE_GCF,            /*72: factorymode gcf*/
    ACT_ID_ENGINEER_MODE_PIN,           /*73: engineer mode pin*/
    ACT_ID_ENGINEER_MODE_PIN_SETTING,   /*74: engineer mode pin setting*/
    ACT_ID_BLUETOOTH,                   /*75: setting bluetooth*/
    ACT_ID_AUDIO_PLAYER,                /*76: audio player*/
    ACT_ID_AUDIO_PLAYER_OPT,            /*77: audio player opt*/
    ACT_ID_AUDIO_PLAYER_ALL_SONGS,      /*78: audio player all songs*/
    ACT_ID_AUDIO_PLAYER_SETTINGS,       /*79: audio player settings*/
    ACT_ID_CALENDAR,                    /*80: calendar*/
    ACT_ID_QRCODE_SCAN,                 /*81: qrcode scan*/
    ACT_ID_IMGVIEWER,                   /*82: imgviewer*/
    ACT_ID_IMGVIEWER_SETTING,           /*83: imgviewer setting*/
    ACT_ID_DIAL_AMBIENT,                /*84: dial ambient*/
    ACT_ID_DUAL_SIM,                    /*85: dual sim*/
    ACT_ID_HEART_RATE,                  /*86: heart rate */
    ACT_ID_SD_AUTO_MOUNT,               /*87: sd auto mount*/
    ACT_ID_SETTING_VOICE_WAKEUP,        /*88: setting voice wakeup*/
    ACT_ID_KEYPAD,                      /*89: setting keypad*/
    ACT_ID_MOBILE_NETWORK,              /*90: mobile network*/
    ACT_ID_APN,                         /*91: APN*/
    ACT_ID_CALL_LOG,                    /*92: call log*/
    ACT_ID_WLAN,                        /*93: setting wlan*/
    ACT_ID_WLAN_LOGIN,                  /*94: setting wlan login*/
    ACT_ID_WLAN_LOGIN_PWD,              /*95: setting wlan login password*/
    ACT_ID_WLAN_SAVED_NW,               /*96: setting wlan saved network*/
    ACT_ID_WLAN_DEL_SAVED_NW,           /*97: setting wlan delete saved network*/
    ACT_ID_WLAN_ACT_AP,                 /*98: setting wlan active ap*/
    ACT_ID_WLAN_OPTION,                 /*99: setting wlan option*/
    ACT_ID_WLAN_ADD_NW,                 /*100: setting wlan add network*/
    ACT_ID_WLAN_DIALOG,                 /*101: setting wlan dialog*/
    ACT_ID_ALARM_LIST,                  /*102: alarm list*/
    ACT_ID_ALARM_ADD,                   /*103: alarm add*/
    ACT_ID_ALARM_EDIT,                  /*104: alarm edit*/
    ACT_ID_COMPASS,                     /*105: compass*/
    ACT_ID_COMPASS_CHECK,               /*106: compass check*/
    ACT_ID_MESSAGE,                     /*107: message*/
    ACT_ID_MESSAGE_DETAIL,              /*108: message detail*/
    ACT_ID_TIMER_LIST,                  /*109: timer list*/
    ACT_ID_TIMER,                       /*110: timer*/
    ACT_ID_MENU,                        /*111: menu list*/
    ACT_ID_SETTING_TAB,                 /*112: setting tab*/
    ACT_ID_SETTING_TAB_ADD,             /*113: setting tab add*/
    ACT_ID_MESSAGE_BAR,                 /*114: pull up message*/
    ACT_ID_EXERCISE,                    /*115: exercise*/
    ACT_ID_EXERCISE_ADD,                /*116: exercise add*/
    ACT_ID_EXERCISE_SETTING,            /*117: exercise setting*/
    ACT_ID_EXERCISE_SETTING_1,          /*118: exercise setting 1*/
    ACT_ID_EXERCISE_SETTING_2,          /*119: exercise setting 2*/
    ACT_ID_EXERCISE_SETTING_3,          /*120: exercise setting 3*/
    ACT_ID_EXERCISE_SETTING_4,          /*121: exercise setting 4*/
    ACT_ID_EXERCISE_SPORT,              /*122: exercise sport*/
    ACT_ID_EXERCISE_VOLUME,             /*123: exercise volume*/
    ACT_ID_SLEEP,                       /*124: sleep          */
    ACT_ID_ELEVATION,                   /*125: elevation*/
    ACT_ID_ACTIVITY,                    /*126: activity*/
    ACT_ID_EXERCISE_RECORD,             /*127: exercise record*/
    ACT_ID_EXERCISE_RECORD_SPORT,       /*128: exercise record sport*/
    ACT_ID_SEARCH_PHONE,                /*129: search phone */
    ACT_ID_SEARCH_SWITCH,               /*130: search switch*/
    ACT_ID_QQ_MAIN,                     /*131: QQ UI main*/
    ACT_ID_QQ_NEW_MSG,                  /*132: QQ new msg*/
    ACT_ID_WLAN_SAVED_AP,               /*133: setting wlan saved ap*/
    ACT_ID_ENGINEER_MODE_KEEP_SCREEN_ON,/*134: engineer mode keep screen on*/
    ACT_ID_ENGINEER_MODE_FW_VERSION,    /*135: engineer mode firmware version*/
    ACT_ID_FLYING_MODE,                 /*136: flying mode*/
    ACT_ID_CALL_FORWARD,                /*137: call forward*/
    ACT_ID_DIVERT_COMMON,               /*138: divert common*/
    ACT_ID_IMS_VOPS_SMS,                /*139: IMSVOPS SMS*/
    ACT_ID_ANYOBJ,                      /* : any object for example*/

    ACT_ID_MAX,
};
typedef uint8_t lv_watch_Activity_Id_t;

/*opt1: go home*/
//#define ACT_ID_ONE_LEVEL_MAX ACT_ID_PEDOMETER /*one level: 0, 1, 2 */

/*opt2: always go back to dail*/
#define ACT_ID_ONE_LEVEL_MAX ACT_ID_LAUNCHER /*one level: 0*/

typedef lv_obj_t * (*lv_watch_activity_create_f_t)(lv_obj_t *);
typedef void (*lv_watch_activity_prepare_destory_f_t)(lv_obj_t *);

typedef struct
{
    lv_watch_Activity_Id_t actId;   /*activity id of the obj*/
    lv_watch_activity_create_f_t create;
    lv_watch_activity_prepare_destory_f_t prepare_destory;
} lv_watch_activity_ext_t;

#ifdef __cplusplus
}
#endif /* __cpluscplus */

#endif /* end of _UI_ACTIVITY_ID_H_ */
